<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="author" content="lijinbo" />
    <title>067-defineProperty初探</title>
  </head>

  <body>
    <div class="max" style="width: 600px">
      Object.defineProperty()的作用就是直接在一个对象上定义一个新属性，或者修改一个已经存在的属性
      一般通过为对象的属性赋值的情况下，对象的属性可以修改也可以删除，但是通过Object.defineProperty()定义属性，
      通过描述符的设置可以进行更精准的控制对象属性。 javacript 有三种类型的属性 1.
      命名数据属性：拥有一个确定的值的属性。这也是最常见的属性 2. 命名访问器属性：通过getter和setter进行读取和赋值的属性
      3. 内部属性：由JavaScript引擎内部使用的属性，不能通过JavaScript代码直接访问到，
      不过可以通过一些方法间接的读取和设置。比如，每个对象都有一个内部属性[[Prototype]]，
      你不能直接访问这个属性，但可以通过Object.getPrototypeOf()方法间接的读取到它的值。
      虽然内部属性通常用一个双吕括号包围的名称来表示，但实际上这并不是它们的名字，
      它们是一种抽象操作，是不可见的，根本没有上面两种属性有的那种字符串类型的属性
    </div>
    <script type="module" src="./067-main.js"></script>
  </body>
</html>
